/*
 * CeldaSDL.h
 *
 *  Created on: 23/10/2013
 *      Author: fernando
 *
 *      Esta clase representa la vista en la interfaz de una celda del
 *      tablero donde se juega.
 */

#ifndef CELDASDL_H_
#define CELDASDL_H_

#include "Golosina.h"
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"

class CeldaSDL {
public:
	//Constructor que devuelve una celda invalida
	CeldaSDL();
	//Constructor para celdas sin contenido, validas o no;
	CeldaSDL(bool, unsigned int x, unsigned int y, unsigned int num);
	//Constructor que devuelve una celda valida y con golosina
	CeldaSDL(Golosina*, unsigned int x, unsigned int y, unsigned int num);
	bool setGolosina(Golosina* golosina);
	//Setea las coordenadas en pixels donde se va a dibujar la celda
	bool setPosicion(unsigned int x, unsigned int y);
	virtual ~CeldaSDL();
	//dibuja la celda sobre una pantalla
	void dibujar(SDL_Surface* screen, bool destruir);
	//devuelve un puntero a la golosina que contiene
	Golosina* getGolosina();
	const unsigned int getPosX();
	const unsigned int getPosY();
	//Devuelve si es una celda valida o no
	const bool getEstado();
	//Vacia la celda, sin eliminar la golosina
	void vaciar();
	bool isVacia();
	//devuelve el numero de celda en el tablero
	const unsigned int getNumero();
	//Una celda es igual a otro si tienen las mismas coordenadas
	bool operator ==(CeldaSDL& c);
	//Vacia la celda, eliminando el contenido de la misma
	void destruirContenido();

private:
	//Le agrega una imagen de fondo a la celda
	void setBackground();
	//dibuja la golosina contenida
	void dibujarGolosina(SDL_Surface* screen, bool destruir);
	bool estado;
	//False es vacía, no se puede usar
	//True -> tiene una golosina o está vacía y tiene que colocarse golosina.
	Golosina* relleno;
	unsigned int posX;
	unsigned int posY;
	SDL_Surface* background;
	unsigned int numero;
	CeldaSDL(const CeldaSDL& celda);
};

#endif /* CELDASDL_H_ */
